<!DOCTYPE html>
<html lang="zh-CN">

<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
</head>

<body>
  <script>


    const arr = ['小鸡', '小鸭', '小鱼']

    // 让 obj可以 for of for of出来的是他内部的 数组
    // 自定义 forof执行的行为
    const obj = {
      name: 'jack',
      friend: 'rose',
      skill: 'jump together',
      foods: ['沙县', '猪脚饭', '手撕鸡'],
      // 属性名表达式
      [Symbol.iterator]() {
        let index = 0
        // console.log(this)
        // 返回一个对象
        return {
          next: () => {
            if (index < 3) {
              return {
                done: false,
                value: this.foods[index++]
              }
            } else {
              return {
                done: true
              }
            }
          }
        }
      }
    }
    // 遍历的值,继承而来的遍历不出来
    // for (const iterator of arr) {
    //   console.log('iterator:', iterator)
    // }

    // for of 并不能遍历所有的东西,比如 object无法遍历
    // 直接遍历对象: obj is not iterable,obj不可迭代
    // [Symbol.iterator] 添加之后,可以迭代,要求返回特定格式的对象
    for (const iterator of obj) {
      console.log('iterator:', iterator)
    }




  </script>
</body>

</html>